/***********************************************************************
    filename:   DaterBaseWindow.h
    created:    10/4/2012
    author:     4Ys

    purpose:    Defines class for BaseWindow objects in UI
*************************************************************************/
#ifndef _DaterBaseWindow_h_
#define _DaterBaseWindow_h_

#include "cegui.h"
#include <string>

class BaseWindow
{
	/*!
	\brief
		The core class of UI, especially for windows.
	*/
public:
		/* !
		\brief
			Construct the sample of class BaseWindow.
			
		\param parent
			- point to parent window.
		*/
	BaseWindow(CEGUI::Window* parent = 0) : _parent(parent ? parent : CEGUI::System::getSingleton().getGUISheet()) {}	
	
		/*!
			Destructor of class DaterWindow.
		*/
	virtual ~BaseWindow() {}

		/* !
		\brief
			a virtual function to be generated to show window.
		*/
	virtual void showWindow() = 0;
	
		/* !
		\brief
			a virtual function to hide window.
		*/
	virtual void hideWindow() = 0;
	
		/* !
		\brief
			a virtual function to get window name.
		*/
	virtual std::string getWindowName(){return _name;}
	
		/* !
		\brief
			a virtual function to get window type.
		*/
	virtual std::string getWindowType(){return _type;}
	
		/* !
		\brief
			a virtual function to get parent.
		*/
	virtual CEGUI::Window* getParent(){return _parent;}
	
		/* !
		\brief
			a virtual function to get root.
		*/
	virtual CEGUI::Window* getRoot(){return _root;}

protected:

		//! A window* contains parents of the window.
	CEGUI::Window* _parent;
	
		//! A window* contains roots of the window.
	CEGUI::Window* _root;

		//! A string presents the name of the window.
	std::string _name;

		//! A string presents the tyoe of the window.
	std::string _type;
};

#endif